/**
 * Project Name:zyhj-web
 * File Name:ZhjsServiceImpl.java
 * Package Name:com.vviton.zyhj.enterprise.service.impl
 * Date:2016年11月23日下午2:18:07
 *
 */

package com.vviton.zyhj.consumer.service.impl;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;

import com.vviton.zyhj.common.base.AppConfig;
import com.vviton.zyhj.common.base.BaseService;
import com.vviton.zyhj.common.common.CodeConstants;
import com.vviton.zyhj.common.common.CommonConstants;
import com.vviton.zyhj.common.common.ValidatorConstants;
import com.vviton.zyhj.common.dao.TYyxtHzglJsjlbMapper;
import com.vviton.zyhj.common.entity.TYyxtHzglJsjlb;
import com.vviton.zyhj.common.utils.DateUtils;
import com.vviton.zyhj.common.utils.ErrorBean;
import com.vviton.zyhj.common.utils.ResultJson;
import com.vviton.zyhj.common.utils.page.Page;
import com.vviton.zyhj.common.view.ParamJfjy;
import com.vviton.zyhj.common.view.ParamJsjl;
import com.vviton.zyhj.common.view.ViewJsjl;
import com.vviton.zyhj.consumer.service.YhZhjsService;
import com.vviton.zyhj.cors.JfglCors;

/**
 * ClassName:HzfZhjsServiceImpl <br/>
 * Function: 用户账号结算接口实现. <br/>
 * Date: 2016年11月23日 下午2:18:07 <br/>
 *
 * @author huangqq
 * @version 1.0
 * @since JDK 1.7
 */
public class YhZhjsServiceImpl extends BaseService implements YhZhjsService {

    /** 日志 */
    private static Logger logger = Logger.getLogger(YhZhjsServiceImpl.class);

    /** 结算记录Mapper */
    @Autowired
    private TYyxtHzglJsjlbMapper tYyxtHzglJsjlbMapper;

    /** 积分Cors */
    @Autowired
    private JfglCors jfglCors;

    /** 读取配置文件信息 */
    @Autowired
    private AppConfig appConfig;

    /**
     * insertJsxx,插入结算信息. <br/>
     * Author: huangqq <br/>
     * Create Date: 2016年11月23日 <br/>
     * ===============================================================<br/>
     * Modifier: huangqq <br/>
     * Modify Date: 2016年11月23日 <br/>
     * Modify Description: <br/>
     * ===============================================================<br/>
     *
     * @param tYyxtHzglJsjlb 结算记录表
     * @return 执行结果
     * @since JDK 1.7
     */
    @Override
    public ResultJson insertJsxx(TYyxtHzglJsjlb tYyxtHzglJsjlb) {
        ResultJson rs = new ResultJson(false);
        List<ErrorBean> errCodeList = new ArrayList<ErrorBean>();

        if (StringUtils.isBlank(tYyxtHzglJsjlb.getYwy())) {
            rs.setMessage(ValidatorConstants.E1400);
            return rs;
        }
        Integer syjf = this.getYhsyjf(tYyxtHzglJsjlb.getOperatercode());
        if (syjf < tYyxtHzglJsjlb.getJsjf()) {
            ErrorBean errorBean = new ErrorBean();
            errorBean.setErrorData(ValidatorConstants.E1402);
            errCodeList.add(errorBean);
            rs.setErrorList(errCodeList);
            return rs;
        }
        logger.info("开始执行插入结算记录");
        tYyxtHzglJsjlb.setId(this.getKey());
        tYyxtHzglJsjlb.setVersions(this.getVersion());
        tYyxtHzglJsjlb.setOperatercode(tYyxtHzglJsjlb.getOperatercode());
        tYyxtHzglJsjlb.setOperatetime(new Date());
        tYyxtHzglJsjlb.setCreatercode(tYyxtHzglJsjlb.getOperatercode());
        tYyxtHzglJsjlb.setCreatertime(new Date());
        tYyxtHzglJsjlb.setJszt(CodeConstants.JSZT_WJS);
        tYyxtHzglJsjlb.setSqsj(new Date());
        tYyxtHzglJsjlb.setZfbddbh(tYyxtHzglJsjlb.getId() + DateUtils.formatToSimpleDateTime(new Date()));
        tYyxtHzglJsjlb.setDelflag(com.vviton.zyhj.common.common.CommonConstants.DELFLAG_ADD);

        int count = tYyxtHzglJsjlbMapper.insertJsjlb(tYyxtHzglJsjlb);
        if (count > 0) {
            String zh = appConfig.getAdminZh();
            // 跨积分库更新积分交易信息
            String xw = com.vviton.zyhj.content.CommonConstants.XW_JFTX;
            ParamJfjy paramJfjy = new ParamJfjy();
            paramJfjy.setZczhlx(com.vviton.zyhj.content.CommonConstants.JFZHLX_XFZ);
            paramJfjy.setZczh(tYyxtHzglJsjlb.getJsfzh());
            paramJfjy.setZcmc(tYyxtHzglJsjlb.getJsfmc());
            paramJfjy.setZcxw(xw);
            paramJfjy.setHqzhlx(com.vviton.zyhj.content.CommonConstants.JFZHLX_HZF);
            paramJfjy.setHqzh(zh);
            paramJfjy.setHqmc(appConfig.getAdminMc());
            paramJfjy.setHqxw(xw);
            paramJfjy.setJyfz(tYyxtHzglJsjlb.getJsjf());
            paramJfjy.setZcywId(tYyxtHzglJsjlb.getId());
            paramJfjy.setBz(tYyxtHzglJsjlb.getId());
            jfglCors.insertJfjy(paramJfjy);

            rs.setResult(true);
        } else {
            rs.setMessage(ValidatorConstants.E1401);
        }
        logger.info("插入结算信息结束");
        return rs;
    }

    /**
     * getJsxxpagination,获取结算分页记录. <br/>
     * Author: huangqq <br/>
     * Create Date: 2016年11月23日 <br/>
     * ===============================================================<br/>
     * Modifier: huangqq <br/>
     * Modify Date: 2016年11月23日 <br/>
     * Modify Description: <br/>
     * ===============================================================<br/>
     *
     * @param paramJsjl 结算记录参数实体
     * @param lang 语言
     * @return 结算记录
     * @since JDK 1.7
     */
    @Override
    public Page getJsxxpagination(ParamJsjl paramJsjl, String lang) {
        logger.info("获取结算分页记录开始");
        List<ViewJsjl> list = null;
        Page page = new Page();
        if (paramJsjl.getCurrPage() != 0) {
            page.setCurrPage(paramJsjl.getCurrPage());
        }
        if (paramJsjl.getPageSize() != 0) {
            page.setPageSize(paramJsjl.getPageSize());
        }
        page.setParam(paramJsjl);
        Integer count = tYyxtHzglJsjlbMapper.countJsxxpagination(page);
        page.setTotal(count);
        logger.info("共查询到" + count + "条!");
        if (count > 0) {
            list = tYyxtHzglJsjlbMapper.getJsxxpagination(page);
            /* TYyxtCode jsztcode = null;
             for (ViewJsjl viewJsjl : list) {
                 jsztcode = getByKey(CodeConstants.JSZT, lang, viewJsjl.getJszt());
                 if (jsztcode != null) {
                     viewJsjl.setJsztDesc(jsztcode.getCodedesc());
                 }
             }*/
        }
        page.setData(list);
        logger.info("获取结算分页记录结束");
        return page;
    }

    /**
     * getYhsyjf,获取用户剩余积分. <br/>
     * Author: huangqq <br/>
     * Create Date: 2016年11月29日 <br/>
     * ===============================================================<br/>
     * Modifier: huangqq <br/>
     * Modify Date: 2016年11月29日 <br/>
     * Modify Description: <br/>
     * ===============================================================<br/>
     *
     * @param zh 账号
     * @return 用户类型
     * @since JDK 1.7
     */
    @Override
    public Integer getYhsyjf(String zh) {
        return jfglCors.getYhsyjf(CommonConstants.YH, zh);
    }
}
